import { appTasks } from '@ohos/hvigor-ohos-plugin'
import { hvigor, HvigorNode, getNode } from '@ohos/hvigor'
import { preCommit } from './scripts/gitHooks.ts'
import { issueAdd, issueClear, generateModule, issueAddAll, issueRemove } from './scripts/issueTasks.ts'

// 获取当前hvigorNode节点对象
const node: HvigorNode = getNode(__filename)

/**
 * 自动执行git hooks
 */
hvigor.buildFinished(buildResult => {
  runGitHooks(node);
})

function runGitHooks(node) {
  console.log('run git hooks...')
  preCommit(node);
}

/**
 * 注册 issueAdd 任务
 * 用于生成issue模块的编译配置文件并添加到构建配置中
 */
node.registerTask({
  name: 'issueAdd',
  run() {
    issueAdd(node)
  }
})

/**
 * 注册 issueAdd 任务
 * 用于生成issue模块的编译配置文件并添加到构建配置中
 */
node.registerTask({
  name: 'issueAddAll',
  run() {
    issueAddAll(node)
  }
})

/**
 * 注册 issueClear 任务
 * 用于清理所有issue相关配置
 */
node.registerTask({
  name: 'issueClear',
  run() {
    issueClear(node)
  }
})

/**
 * 注册 issueRemove 任务
 * 用于移除指定的issue模块
 */
node.registerTask({
  name: 'issueRemove',
  run() {
    // 直接硬编码问题模块，不需要参数传递
    const issueNOs = ['250218205603046', '250304163101077'];  // 硬编码问题模块列表
    console.log('=== 移除硬编码的问题模块 ===');
    console.log('要移除的模块数量:', issueNOs.length);
    
    try {
      // 逐个移除问题模块
      for (const issueNO of issueNOs) {
        console.log(`正在移除模块: ir${issueNO}`);
        issueRemove(node, issueNO);
        console.log(`模块 ir${issueNO} 移除完成`);
      }
      console.log('所有问题模块移除完成');
    } catch (error) {
      console.error('问题模块移除失败:', error.message);
      throw error;
    }
  }
})

/**
 * 注册生成模块任务
 * 用于创建新模块
 */
node.registerTask({
  name: 'generateModule',
  run() {
    generateModule(node);
  }
})

export default {
  system: appTasks,
  plugins: []
}